基于51单片机的电压表【0 您所在的位置:网站首页 电压 表 基于51单片机的电压表【0

基于51单片机的电压表【0

2024-06-12 08:38| 来源: 网络整理| 查看: 265

自动换挡式数字电压表就是一个基于单片机的能自动切换量程的数字电压表,其作用是在使用低位的AD转换实现高精度电压测量,可以测量0~20V的电压,并且具有0~0.2V(待测电玉低于0.2V时),0~2V(待测电压低于2V时)和0~20V三个量程自动匹配测量,当待测电压值发生变化时,电压表可以根据输入电压情况自动选择合适的量程进行测量,并且把测量结果显示出来。毕业设计需要完成如下功能:

(1)实现0~20V分3档式电压表;

(2)实现电压表精度测试,最高精度要求0.01V;

#include "ADC0832.h" #include "intrins.h" //读取AD值 unsigned int ADC0832(unsigned char channel) //AD转换,返回结果 { unsigned char i = 0; unsigned char j; unsigned int dat = 0; unsigned char ndat = 0; if (channel == 0) channel = 2;//通道1 if (channel == 1) channel = 3;//通道2 ADDI = 1;//输入引脚拉高 _nop_();//延时1us _nop_();//延时1us ADCS = 0;//片选 _nop_();//延时1us _nop_();//延时1us ADCLK = 1;//拉高时钟 _nop_();//延时1us _nop_();//延时1us ADCLK = 0;//拉低时钟 _nop_();//延时1us _nop_();//延时1us ADCLK = 1;//拉高时钟 ADDI = channel & 0x1; _nop_();//延时1us _nop_();//延时1us ADCLK = 0;//拉低时钟 _nop_();//延时1us _nop_();//延时1us ADCLK = 1;//拉高时钟 ADDI = (channel >> 1) & 0x1; _nop_();//延时1us _nop_();//延时1us ADCLK = 0;//拉低时钟 ADDI = 1;//输出1 _nop_();//延时1us _nop_();//延时1us dat = 0; //存储清零 ADDI =1; for (i = 0; i < 8; i++) //循环8次 { dat |= ADDI;//读取引脚 ADCLK = 1; //拉高时钟 _nop_();//延时1us _nop_();//延时1us ADCLK = 0;//拉低时钟 _nop_();//延时1us _nop_();//延时1us dat


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有